package com.mercury.flowable.factory;

import lombok.Getter;
import org.flowable.engine.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * flowable 引擎注入封装
 */
@Component
@Getter
public class FlowServiceFactory {

    /**
     * 流程资源管理类
     */
    @Resource
    protected RepositoryService repositoryService;

    /**
     * 流程运行管理类。可以从这个服务类中获取很多关于流程执行相关的信息
     */
    @Resource
    protected RuntimeService runtimeService;

    @Resource
    protected IdentityService identityService;

    /**
     * 。可以从这个类中获取任务的信息
     */
    @Resource
    protected TaskService taskService;

    /**
     * 历史管理类，可以查询历史信息，执行流程时，引擎会保存很多数据（根据配置），比如流程实例启动时间，任务的参与者， 完成任务的时间，每个流程实例的执行路径，等等。 这个服务主要通过查询功能来获得这些数据。
     */
    @Resource
    protected HistoryService historyService;

    /**
     * 引擎管理类，提供了对Flowable 流程引擎的管理和维护功能，这些功能不在工作流驱动的应用程序中使用，主要用于 Flowable 系统的日常维护。
     */
    @Resource
    protected ManagementService managementService;

    @Qualifier("processEngine")
    @Resource
    protected ProcessEngine processEngine;

}
